package com.mall.utils.live;

import java.util.Calendar;
import java.util.Date;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;

/**
 * TencentYunVedioUtil工具类
 * @author LiJinYang
 * @version 1.0
 * @email 283006176@qq.com
 * @date 2021/07/29 10:39
 */
public class TencentYunVedioUtil {
    //推流防盗链的key 你自己的推流K
    public static final String push_key = "80ad1e29f995f0e3843ad187a2fa0aab";
    //拉流防盗链的key 你自己的直播K，注意域名需要去解析CNAME，推流k和拉流k可能相同
    public static final String play_key = "XXXXXXXXXXXXXXXX";
    //推流地址
    public static final String pushUrl ="rtmp://147575.livepush.myqcloud.com/live/mall";
    //拉流地址 例子 rtmp  只需要将push 改成play即可
    //自己申请的播放地址域名xx.xxx.cn或xx.xxx.com
    public static final String playUrl_rtmp ="rtmp://xx.xxx.cn/live/xxxxx";
    public static final String playUrl_flv ="http://xx.xxx.cn/live/xxxxx.flv";
    public static final String playUrl_hls ="http://xx.xxx.cn/live/xxxxx.m3u8";

    /**
     * 生成防盗链签名
     * @param key ：防盗链key
     * @param streamName ：直播码（或称作流ID）
     * @param txTime ：过期时间 16进制的unix时间戳
     * @return
     */
    public static String genSign(String key,String streamName, String txTime) {
        return MD5Encode.getMD5Str(key+streamName+txTime);
    }

    /**
     * 播放
     * @param key
     * @param txTime
     * @return
     */
    public static String pushSign(String key, String txTime) {
        return MD5Encode.getMD5Str(key+txTime);
    }

    /**
     * 生成直播码
     * 直播码 也叫房间号，推荐用随机数字或者用户ID，注意一个合法的直播码需要拼接 BIZID 前缀。
     * @param bizid
     * @param userId 用户id
     * @return
     */
    public static String genLiveCode(String bizid,String userId) {
        return bizid+"_"+userId;
    }

    /**
     * 随机生成6位数字
     */
    public static String bizid(){
        int newNum = (int)((Math.random()*9+1)*100000);
        return String.valueOf(newNum);
    }

    /**
     * 将传入的时间转换为 16进制
     * @param date
     * @return
     */
    public static String to16Hex(Date date) {
        Long ab = date.getTime()/1000;
        String a = Long.toHexString(ab);
        return a.toUpperCase();
    }

    /**
     * 将当前时间加1天
     */
    public static Date addOneDay() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, 1);
        Date date = cal.getTime();
        return date;
    }
    /**
     * 校验是否在线
     * @param urls 拉流地址
     * @return
     */
    public static boolean isPush(String urls) {
        try {
            URL url = new URL(urls);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(1000);
            conn.setReadTimeout(1000);
            conn.setRequestMethod("GET");
            conn.connect();
            return conn.getResponseCode() == 200;
        } catch (Exception e) {
        }
        return false;
    }

}
